/*
 * @lc app=leetcode.cn id=1854 lang=typescript
 *
 * [1854] 人口最多的年份
 */

// @lc code=start

function maximumPopulation(logs: number[][]): number {
    let die: number[] = [];
    let final = 1950;
    let now = 1950;
    let max = 0;
    let head = 0;
    // 依照出生年排序，因为只有出生，人口才加
    logs.sort((a, b) => a[0] - b[0]).forEach(([start, end]) => {
        die.push(end);
        die.sort((a, b) => a - b);
        // 将现在指向较大年份
        now = Math.max(start, now);
        head++;
        if (now < die[0]) {
            // 没人死，那么就是往前面加
            if (head > max) {
                // 并且超过最大人数
                final = now;
                max = head;
            }
        } else {
            // 有人死了，那么将年份依次弹出，并减去人头
            while (now >= die[0]) {
                die.shift();
                head--;
            }
        }
    });
    return final;
}
// @lc code=end
